搜档网
当前位置:搜档网 › php接收二进制数据流转换成图片

php接收二进制数据流转换成图片

php接收二进制数据流转换成图片
php接收二进制数据流转换成图片

Php代码

1

2 /**

3 * 图片类

4 * @author Haroldphp@https://www.sodocs.net/doc/251130348.html,

5 * @version 1.0

6 *

7 */

8 class image {

9 const ROOT_PA TH = './';

10 const FAIL_WRITE_DA TA= https://www.sodocs.net/doc/251130348.html,/a/biancheng/web/php//'Fail to write data';

11 //没有数据流

12 const NO_STREAM_DA TA= https://www.sodocs.net/doc/251130348.html,/a/biancheng/web/php/'The post data is empty';

13 //图片类型不正确

14 const NOT_CORRECT_TYPE = 'Not a correct image type';

15 //不能创建文件

16 const CAN_NOT_CREA TE_FILE = 'Can not create file';

17 //上传图片名称

18 public $image_name;

19 //图片保存名称

20 public $save_name;

21 //图片保存路径

22 public $save_dir;

23 //目录+图片完整路径

24 public $save_fullpath;

25

26 /**

27 * 构造函数

28 * @param String $save_name 保存图片名称

29 * @param String $save_dir 保存路径名称

30 */

31 public function __construct($save_name, $save_dir) {

32 //set_error_handler ( $this->error_handler () );

33

34 //设置保存图片名称,若未设置,则随机产生一个唯一文件名

35 $this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () );

36 //设置保存图片路径,若未设置,则使用年/月/日格式进行目录存储

37 $this->save_dir = $save_dir ? self::ROOT_PA TH .$save_dir : self::ROOT_PA TH .date ( 'Y/m/d' );

38

39 //创建文件夹

40 @$this->create_dir ( $this->save_dir );

41 //设置目录+图片完整路径https://www.sodocs.net/doc/251130348.html,

42 $this->save_fullpath = $this->save_dir . '/' . $this->save_name;

43 }

44 //兼容PHP4

45 public function image($save_name) {

46 $this->__construct ( $save_name );

47 }

48

49 public function stream2Image() {

50 //二进制数据流

51 $data = https://www.sodocs.net/doc/251130348.html,/kf/201204/file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RA W_POST_DA TA'] );

52 //数据流不为空,则进行保存操作

53 if (! empty ( $data )) {

54 //创建并写入数据流,然后保存文件

55 if (@$fp = fopen ( $this->save_fullpath, 'w+' )) {

56 fwrite ( $fp, $data );

57 fclose ( $fp );

58 $baseurl = "http://" . $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) . '/' . $this->save_name;

59 if ( $this->getimageInfo ( $baseurl )) {

60 echo $baseurl;

文章来自:哈客部落详文参考:https://www.sodocs.net/doc/251130348.html,/a/biancheng/web/php/2012/0418/49973.html

二进制十进制八进制十六进制转换练习题

数制及相互转换 一、单选题 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 A、11110000(二进制) B、249(十进制) C、274(八进制) D、FA(十六进制) 6、下列数据中数值最大的是 A、11101101(二进制) B、235(十进制) C、351(八进制) D、EE(十六进制) 7、下列各数中最大的是 A、11010110B B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、1000000 B、10000000 C、100000000 D、1000000000 10、与十六进制数ACE等值的十进制数是 A、2766 B、2765 C、2764 D、2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、310 B、1222 C、1000 D、532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、123 C、354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、257 B、288 C、256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍? A、1 B、2 C、1/2 D、4 17、下列数据中数值最大的是 A、(10000)2 B、(17)8 C、(17)10 D、(10)16 18、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。 A、10 B、11 C、12 D、13

二进制数转换成十进制数是。

七、基础选择题 1.二进制数1110111.11 转换成十进制数是( ) 。 A.119.125 B.119.75 C.119.375 D.119.3 2.下列叙述中,正确的一条是( ) 。 A.存储在任何存储器中的信息,断电后都不会丢失 B.操作系统是只对硬盘进行管理的程序 C.硬盘装在主机箱内,因此硬盘属于主存 D.磁盘驱动器属于外部设备 3.英文OS指的是()。 A.显示英文的屏幕 B.窗口软件 C.操作系统 D.磁盘操作系统 4.数字符号0 的ASCII 码十进制表示为48,数字符号9 的ASCII 码十进制表示为( ) 。 A.56 B.57 C.58

D.59 5.目前使用的微型计算机,其主要逻辑器件是由( ) 构成的。 A.电子管 B.晶体管 C.中、小规模集成电路集成电路 D.大规模、超大规模集成电路 6.微机正在工作时电源突然中断供电,此时计算机( ) 中的信息全部丢失,恢 并且复供电后也无法恢复这些信息。 A.ROM B.RAM C.硬盘 D.软盘 7.与外存储器相比,内存储器的主要特征是( ) 。 A.存储大量的信息 B.存储正在运行的程序 C.能存储程序和数据 D.能长期保存信息 8.所谓“裸机”是指( ) 。 A.单片机 B.单板机 C.不装备任何软件的计算机 D.只装备操作系统的计算机

9.构成计算机的电子和机械的物理实体称为( ) 。

B.计算机硬件系统 C.主机 D.外设 10.在表示存储器的容量时,1MB的准确含义是()。 A.1000KB B.1024GM C.1000B D.1024KB 11?微型计算机的结构原理是采用() 结构,它使CPU与内存和外设的连接简单化与标准化。 A.总线 B.星形连接 C.网络 D.层次连接 12.指令构成的语言称为( ) 语言。 A.汇编 B.高级 C.机器 D.自然 13.软件包括( ) 。 A.程序 B.程序及文档 C.文档及数据

实数十进制转换二进制和二进制实数转换十、八、十六进制

答案为1、(213.4)10 = (11010101.01100)2 = (325)8 = (D5)16 2、(11001011.0101)2 = (203.3125)10 = (313)8 = (CB)16 (1) 213.4转换成二进制先转换整数部分再转换小数部分(十进制数字后边是d,二进制是2或者B) 213.4=(213)d+(0.4)d; 整数部分用除2法: (213)d=:(除2,商继续除2,余数从下往上就是二进制数) 213/2 商:余: 106 1 106/2 商余 53 0 53/2 商余 26 1 26/2 商余 13 0 13/2 商余 6 1 6/2 商余 3 0 3/2

商余 1 1 1/2 商余 0 1 余数从下往上(11010101)2就是213转化的二进制 小数部分用乘2法: (0.4)d=:(乘2满1写1然后小数部分继续乘以2,直到小数部分全部为零) 0.4*2=0.8(不满1为0) 0 0.8*2=1.6(满1取1、1.6-1=0.6) (1) 0.6*2=1.2(满1取1、1.2-1=0.2) (1) 0.2*2=0.4(不满1为0) 0 0.4*2=0.8(不满1为0) 0 ....... ..... .... ..... ..... 无限.... 从上往下取(01100.......) 乘下来如果小数部分可以全部为零为准确二进制纯小数(如(0.625)d=(0.101)2)是准确值,但是上边的例子是不行得,所以可以根据需要取到某精度。 于是:(213.4)d=(213)d+(0.4)d=(11010101)2+(01100)2=(11010101.01100)2 八进制和十六进制只能表示正整数,所以213.4要去掉小数部分成213再转换成八进制和十六进制 十进制转换八进制是除8:

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。为描述方便常用八、十进制,十六进制数表示二进制数 在微机中,一般在数字的后面,用特定字母表示该数的进制。 十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。 基为:10 运算规则:逢十进一,借一当十 在十进制数的后面加大写字母D以示区别。 二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。 基为:2 运算规则:“逢二进一,借一当二”的原则。 在八进制数据后加英文字母“B” 八进制:使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”, 十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。 运算规则:逢十六进一

基为:16 在十六进制数据后加英文字母“H”以示分别。 那么二进制数与八进制、十进制,十六进制数是怎么转换的呢 3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。观察在黑板上做的同学的对错情况,要知道错,错在那里。 由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 各数制的权 如:十进制中,各位的权为10n-1 二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1 八进制中,各位的权为8n-1 1)、二进制转换为十进制 各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。 二进制数的基数为2 例()2=()D

二进制数转换成十进制数

二进制数转换成十进制数 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方 不过次方要从0开始 相反用十进制的数除以2 每除一下将余数就记在旁边 最后按余数从下向上排列就可得到1101 十进制转二进制: 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110

二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107. 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二进制转十进制 本人有个更直接的方法,例如二进制数1000110转成十进制数可以看作这样:

数字中共有三个1 即第二位一个,第三位一个,第七位一个,然后十进制数即2的2-1次方+2的3-1次方+2的7-1次方即 2+4+64=70 次方数即1的位数减一。如此计算只需要牢记2的前十次方即可在此本人为大家陈述一下:2的0次方是1 2的1次方是2 2的2次方是4 2的3次方是8 2的4次方是16 2的5次方是32 2的6次方是64 2的7次方是128 2的8次方是256 2的9次方是512 2的10次方是1024 2的11次方是2048 2的12次方是4096 2的13次方是8192 2的14次方是16384 2的15次方是32768 2的16次方是65536 在这里仅为您提供前16次方,若需要更多请自己查询。 十进制数转换为二进制数

二进制码转换为十进制(BCD)码

二进制码转换为十进制(BCD)码 转换原理 对于一个8位二进制码bn-1bn-2……b1b0,,其在十进制编码方式下的值为 把上式写出套乘的形式: 式中的每项乘2,相当于将寄存器中的二进制码左移1位,这就意味着利用移位寄存器可以完成二进制与8421BCD的转换。[2] 在移位的过程中,当现态Sn<5时,次态不变。当现态Sn=5、6、7时,左移一次,其次态Sn+1将会超过9,对于一个BCD码来说,这样的状态属于禁用状态。而当Sn=8、9时,左移1位,则会向高1位的BCD码输入一个进位的信号 ,由于二进制和BCD码权不一致,当发生进位时,虽然码元只是左移1位,但次态Sn+1将减少6。基于上面这两种情况,在B/BCD转换时需要对转换结果加以校正。校正过程如下:当Sn>=5时,我们让Sn先加上3,然后再左移1位,次态 Sn+1=2(Sn+3)=2Sn+6,正好补偿由于进位而减少的数值,并且向后一个变换单元送入一个进位信号,这个方法叫“加3移位法”。 注意:现态和次态都是指BCD码,即用4位二进制表示的1位BCD码。我们对Sn=8、9时举个例子:BCD码的1000(8)乘以2为0001_0110(16),但是左移后变为0001_0000,减少了6。所以需要加上6,这里的方法是加3左移一位,相当于加上6。 转换方法 首先,先了解二进制与BCD码的位数对应关系,比如一个8位二进制码,可以表示的最大十进制数为255,转换成BCD码为 0010_0101_0101,共需12位,其中每4位组成一个BCD单元,有三个BCD单元,分别表示百位(hundreds)、十位(tens)和个位(units)。n位二进制码转换成D位BCD码的n~D 对应关系表见表1。 表1 n~D对应关系

二进制、八进制、十进制与十六进制转换计算精华复习过程

二进制、八进制、十进制与十六进制转换 计算精华

三、二进制转化成其他进制 1.二进制(Binary)——>八进制(Octal) 例子1:将二进制数(10010)2转化成八进制数。 (10010)2=(010 010)2=(2 2)8=(22)8 例子2:将二进制数(0.10101)2转化为八进制数。 (0.10101)2=(0. 101 010)2=(0. 5 2)8=(0.52)8 诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。 2.二进制(Binary)——>十进制(Decimal) 例子1:将二进制数(10010)2转化成十进制数。 (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10

例子2:将二进制数(0.10101)2转化为十进制数。 (0.10101)2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+0.5+0.25+0.125+0.0625+0.03125)10=(0.96875)10 诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n 位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。 3.二进制(Binary)——>十六进制(Hex) 例子1:将二进制数(10010)2转化成十六进制数。 (10010)2=(0001 0010)2=(1 2)16=(12) 16 例子2:将二进制数(0.10101)2转化为十六进制数。 (0.10101)2=(0. 1010 1000)2=(0. A 8)16=(0.A8)16 诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。 (10010)2=(22)8=(18) 10=(12)16 (0.10101)2=(0.52)8=(0.96875)10=(0.A8)16 四、八进制转化成其他进制 1.八进制(Octal)——>二进制(Binary) 例子1:将八进制数(751)8转换成二进制数。 (751)8=(7 5 1)8=(111 101 001)2=(111101001)2 例子2:将八进制数(0.16)8转换成二进制数。

二进制、八进制、十进制、十六进制之间转换(含小数部分)

二进制、八进制、十进制、十六进制之间转换 一、十进制与二进制之间的转换 (1)十进制转换为二进制,分为整数部分和小数部分 ①整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例: 例:将十进制的168转换为二进制 得出结果将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 第四步,将商21除以2,商10余数为1。 第五步,将商10除以2,商5余数为0。 第六步,将商5除以2,商2余数为1。 第七步,将商2除以2,商1余数为0。 第八步,将商1除以2,商0余数为1。 第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000 (2)小数部分 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例: 例1:将0.125换算为二进制 得出结果:将0.125换算为二进制(0.001)2 分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 第四步,读数,从第一位读起,读到最后一位,即为0.001。 例2,将0.45转换为二进制(保留到小数点第四位) 大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好

二进制,八进制,十进制,十六进制之间的转换算法

二进制,八进制,十进制,十六进制之间的转换算法 一、十进制与二进制之间的转换 (1)十进制转换为二进制,分为整数部分和小数部分 ①整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例: 例:将十进制的168转换为二进制 得出结果将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 第四步,将商21除以2,商10余数为1。 第五步,将商10除以2,商5余数为0。 第六步,将商5除以2,商2余数为1。 第七步,将商2除以2,商1余数为0。 第八步,将商1除以2,商0余数为1。 第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000 (2)小数部分 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例: 例1:将0.125换算为二进制 得出结果:将0.125换算为二进制(0.001)2 分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 第四步,读数,从第一位读起,读到最后一位,即为0.001。 例2,将0.45转换为二进制(保留到小数点第四位) 大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。

二进制数转换成十进制数是

二进制数转换成十进制数 是 The document was prepared on January 2, 2021

七、基础选择题 1. 二进制数转换成十进制数是( )。 A. B. C. D. 2. 下列叙述中,正确的一条是( )。 A. 存储在任何存储器中的信息,断电后都不会丢失 B. 操作系统是只对硬盘进行管理的程序 C. 硬盘装在主机箱内,因此硬盘属于主存 D. 磁盘驱动器属于外部设备 3. 英文OS指的是( )。 A. 显示英文的屏幕 B. 窗口软件 C. 操作系统

D. 磁盘操作系统 4. 数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为( )。 A. 56 B. 57 C. 58 D. 59 5. 目前使用的微型计算机,其主要逻辑器件是由( )构成的。 A. 电子管 B. 晶体管 C. 中、小规模集成电路集成电路 D. 大规模、超大规模集成电路 6. 微机正在工作时电源突然中断供电,此时计算机( )中的信息全部丢失,并且恢复供电后也无法恢复这些信息。 A. ROM B. RAM

D. 软盘 7. 与外存储器相比,内存储器的主要特征是( )。 A. 存储大量的信息 B. 存储正在运行的程序 C. 能存储程序和数据 D. 能长期保存信息 8. 所谓“裸机”是指( )。 A. 单片机 B. 单板机 C. 不装备任何软件的计算机 D. 只装备操作系统的计算机 9. 构成计算机的电子和机械的物理实体称为( )。 A. 计算机系统 B. 计算机硬件系统 C. 主机

10. 在表示存储器的容量时,1MB的准确含义是( )。 A. 1000KB B. 1024GM C. 1000B D. 1024KB 11. 微型计算机的结构原理是采用( )结构,它使CPU与内存和外设的连接简单化与标准化。 A. 总线 B. 星形连接 C. 网络 D. 层次连接 12. 指令构成的语言称为( )语言。 A. 汇编 B. 高级 C. 机器

二进制十进制八进制十六进制相互转换

.基本知识 十进制 基数为10,逢10进1。在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。 二进制 基数为2,逢2进1。在二进制中,使用0和1两种符号。 八进制 基数为8,逢8进1。八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1。十六进制使用16种不同的符号,它们与二进制的转换关系为: 0:0000 1:0001 2:0010 3:0011 4:0100 5:0101 6:0110 7:0111 8:1000 9:1001 A:1010 B:1011 C:1100 D:1101 E:1110 F:1111 二进制数的运算 算术运算:加法 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(向高位进1) 算术运算:减法 0 ? 0 = 0 0 ? 1 = 1(向高位借1)1 ? 0 = 1 1 - 1 = 0 逻辑运算:或(∨) 0 ∨0 = 0 0 ∨1 = 1 1 ∨0 = 1 1 ∨1 = 1 逻辑运算:与(∧)

0 ∧0 = 0 0 ∧1 = 0 1 ∧0 = 0 1 ∧1 = 1 逻辑运算:取反 0取反为1 1取反为0 注意:算术运算会发生进位、借位,逻辑运算则按位独立进行,不发生位与位之间的关系,其中,0表示逻辑假,1表示逻辑真。 2.转换为十进制 二进制化为十进制 例:将二进制数101.01转换成十进制数 (101.01)2 = 1×22 + 0×21 + 1×20 + 0×2-1 + 1×2-2 = (5.25)10 八进制化为十进制 例:将八进制数12.6转换成十进制数 (12.6)8 = 1×81 + 2×80 + 6×8-1 = (10.75)10 十六进制化为十进制 例:将十六进制数2AB.6转换成十进制数: (2AB.6)16 = 2×162 + 10×161 + 11×160 + 6×16-1 = (683.375)10 3.转换为二进制 八进制化为二进制 规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变。 例:(17.36)8 = (001 111 .011 110)2 = (1111.01111)2 十六进制化为二进制 规则:每1位十六进制数改写成等值的4位二进制数,次序不变。

八进制数和十进制数相互转换

目录 课程设计任务书 (2) 1.设计题目 (3) 2.设计要求 (3) 3.理论知识 (3) 3.1进位计数制 (3) 3.2进制转换 (4) 3.3 ASCII 码 (5) 4.程序结构 (6) 4.1总体结构 (6) 4.2十进制转二进制DECibin (7) 4.3二进制转八进制binioct (8) 4.4八进制转二进制octbin (9) 4.5二进制转十进制binidec (10) 5.程序清单 (11) 6.运行结果 (15) 7.心得体会 (17) 本科生课程设计成绩评定表 (18)

课程设计任务书 学生姓名专业班级: 指导教师:徐东平工作单位:计算机科学与技术学院题目: 八进制数和十进制数相互转换 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具 体要求) 进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求: 1)编写八进制和十进制间的转换程序; 2)要求在屏幕上输出结果。 3)程序采用子程序结构,结构清晰; 4)友好清晰的用户界面,能识别输入错误并控制错误的修改。 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》实验2.4 2)《IBM—PC汇编语言程序设计(第2版)》例6.11 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

二进制、八进制、十进制与十六进制转换计算精华

二进制、八进制、十进制与十六进制 一、进制的概念 在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。 对于进制,有两个基本的概念:基数和运算规则。 基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0, n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。 运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。 二、二、八、十、十六进制基数对照表 二进制八进制十进制十六进制2的乘方 Binary Octal Decimal Hex 0000000 0001111 0010222 00113332=1 01004442=2 01015552=4 01106662=8 01117772=16 100010882=32 100111992=64 10101210A2=128 10111311B2=256 11001412C2=512 11011513D 11101614E 11111715F

三、二进制转化成其他进制 1.二进制(Binary)——>八进制(Octal) 例子1:将二进制数(10010)2转化成八进制数。 (10010)2=(010 010)2=(2 2)8=(22)8 例子2:将二进制数(0.10101)2转化为八进制数。 (0.10101)2=(0. 101 010)2=(0. 5 2)8=(0.52)8 诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。 2.二进制(Binary)——>十进制(Decimal) 例子1:将二进制数(10010)2转化成十进制数。 (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10 例子2:将二进制数(0.10101)2转化为十进制数。

二进制十进制八进制十六进制转换练习题 ()

数制及相互转换 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 A、11110000(二进制) B、249(十进制) C、274(八进制) D、FA(十六进制) 6、下列数据中数值最大的是 A、11101101(二进制) B、235(十进制) C、351(八进制) D、EE(十六进制) 7、下列各数中最大的是 A、11010110B B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、1000000 B、10000000 C、100000000 D、1000000000 10、与十六进制数ACE等值的十进制数是 A、2766 B、2765 C、2764 D、2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、310 B、1222 C、1000 D、532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、123 C、354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、257 B、288 C、256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍? A、1 B、2 C、1/2 D、4

二进制转十进制快速计算

二进制转十进制 二进制的1101转化成十进制 1101(2) =1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进 制的每个数去乘以2的相应次方 不过次方要从0开始 相反用十进制的数除以2 每除 一下将余数就记在旁边 最后按余数从下向上排列就可得 到1101或者用下面这种方法: 13=8+4+0+1=8+4+1(算出等 于13就行了) 由二进制数转换成十进制数的基 本做法是,把二进制数首先写成加权 系数展开式,然后按十进制加法规则 求和。这种做法称为"按权相加"法。 例如二进制数1000110转成十 进制数可以看作这样: 数字中共有三个1 即第二位一 个,第三位一个,第七位一个,然后 十进制数即2的2-1次方+2的3-1次方+2的7-1次方即2+4+64=70 次方数即 1的位数减一。 2的0次方是1 2的1次方是2 2的2次方是4 2的3次方是8 2的4次方是16 2的5次方是32 2的6次方是64 2的7次方是128 2的8次方是256 2的9次方是512 2的10次方是1024 2的11次方是2048 2的12次方是4096 2的13次方是8192 2的14次方是16384 2的15次方是32768 2的16次方是65536 2的17次方是131072 2的18次方是262144 2的19次方是524288

2的20次方是1048576 十进制转二进制 十进制数转换为二进制数时,由 于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整 数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 十进制整数转二进制 如:255=(11111111)B 255/2=127=====余1 127/2=63======余1 63/2=31=======余1 31/2=15=======余1 15/2=7========余1 7/2=3=========余1 3/2=1=========余1 1/2=0=========余1 789=1100010101 789/2=394.5 =1 第10位 394/2=197 =0 第9位 197/2=98.5 =1 第8位 98/2=49 =0 第7位 49/2=24.5 =1 第6位 24/2=12 =0 第5位 12/2=6 =0 第4位 6/2=3 =0 第3位 3/2=1.5 =1 第2位 1/2=0.5 =1 第1位 原理:假设一个十进制的数能够 写成二进制的edcba形式那么这个十进制的数一定等于a(2^0)+b(2^1)+c (2^2)+d(2^3)+e(2^4)将以上数列除 以2,所得的余数是a,商是b(2^0)+c (2^1)+d(2^2)+e(2^3)再除以二,余

二进制、八进制、十六进制转换方式

第六章二进制、八进制、十六进制 6.1 为什么需要八进制和十六进制? 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 6.2.2 八进制数转换为十进制数 6.2.3 八进制数的表达方法 6.2.4 八进制数在转义符中的使用 6.2.5 十六进制数转换成十进制数 6.2.6 十六进制数的表达方法 6.2.7 十六进制数在转义符中的使用 6.3 十进制数转换到二、八、十六进制数 6.3.1 10进制数转换为2进制数 6.3.2 10进制数转换为8、16进制数 6.4 二、十六进制数互相转换 6.5 原码、反码、补码 6.6 通过调试查看变量的值 6.7 本章小结 这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是

乘或除的计算。 生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。 生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… (该版课程的内容更新及订正均已停止) 旧版课程打包下载 ---------------------------------- [想看涵盖“面向对象”、“图形编程”、“泛型编程”…… 的“最新2008年版白话C++”课程,请点击!] (另有: 博客版) 6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……必竟C/C++是高级语言。 比如:

八进制转十进制

八进制转十进制 方法:将第一位乘以8^(N次方)+第二位乘以8^(N-1次方)+。。。直到N为0为止 注:N为从右至左的位数减一 例如:123=1x8^2+2x8^1+3x8^0 =64+16+3 =83 二进制、八进制、十进制、十六进制之间转换 一、十进制与二进制之间的转换 (1)十进制转换为二进制,分为整数部分和小数部分 ①整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例: 例:将十进制的168转换为二进制 得出结果将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 第四步,将商21除以2,商10余数为1。 第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。 第七步,将商2除以2,商1余数为0。 第八步,将商1除以2,商0余数为1。 第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000 (2)小数部分 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例: 例1:将0.125换算为二进制 得出结果:将0.125换算为二进制(0.001)2 分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 第四步,读数,从第一位读起,读到最后一位,即为0.001。

java十进制转换为二进制、八进制和十六进制

/* *java十进制转换为二进制、八进制和十六进制 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class QueryJFrame extends JFrame implements ActionListener { private JTextField text_char, text2, text8, text16; private MessageJDialog jdialog; private Button button_char; public QueryJFrame() { super("进制转换"); this.setBounds(300, 240, 200, 180); this.setResizable(false); this.setBackground(java.awt.Color.lightGray); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.getContentPane().setLayout(new FlowLayout(FlowLayout.RIGHT)); this.getContentPane().add(new JLabel("十进制")); text_char = new JTextField(10); text_char.setHorizontalAlignment(JTextField.RIGHT); this.getContentPane().add(text_char); this.getContentPane().add(new JLabel("二进制")); text2 = new JTextField(10); text2.setHorizontalAlignment(JTextField.RIGHT); text2.setEditable(false); this.getContentPane().add(text2); this.getContentPane().add(new JLabel("八进制")); text8 = new JTextField(10); text8.setHorizontalAlignment(JTextField.RIGHT); text8.setEditable(false); this.getContentPane().add(text8); this.getContentPane().add(new JLabel("十六进制")); text16 = new JTextField(10); text16.setHorizontalAlignment(JTextField.RIGHT); text16.setEditable(false); this.getContentPane().add(text16);

十进制、二进制、八进制、十六进制之间的换算规律资料

◆十进制转二进制: 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前计算机系统使用的基本上是二进制系统。 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故二进制为100101110 ◆二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107. 好了,现在对二进制和十进制之间的换算有了初步的了解了吧,下面,我们就进一步深入了解二者之间的其他换算规律: 二进制转十进制,十进制转二进制的算法 一、二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权

系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二、十进制数转换为二进制数 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 2.十进制小数转换为二进制小数 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 1.二进制与十进制的转换 (1)二进制转十进制 方法:"按权展开求和"

相关主题