进制及其相关
来源:互联网 发布:网络机顶盒遥控器配对 编辑:程序博客网 时间:2024/05/10 09:53
进制及其相关
一。
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用0~9和A,B,C,D,E,F
举例:(使用10进制表示下列进制的数)
16进制的32 : 2×16^0+3×16^1=50
8进制的1507:7 × 8^0 + 0 × 8^1 + 5 * 8^2 + 1 × 8^3 = 839
2进制数的0110 0100: 0 ×2^0 + 0 × 2^1 + 1 × 2^2 + 1 ×2^3 + 0 × 2^4 + 1 × 2^5 + 1 × 2^6 + 0 × 2^7 = 100
二。为什么需要八进制和十六进制?
我们习惯使用10进制来思维,但是计算机确是使用2进制来表示,偶尔使用二进制可以有利于我们更好的解决问题,但是二进制数目是如此的长而难于思考和操作,比如一个int 类型占用4个字节,32位。一个10进制的100,用int类型的二进制数表达将是:
0000 0000 0000 0000 0110 0100
于是我们采用了一个折中的办法,使用8进制或者16进制,它们除了便于和2进制数进行转换,大大缩短表示长度之外,还很好的保留了2进制数的运算特点,便于做& | > 等2进制的运算。
三 一些规定
事实上,对某些数来说,我们既可以理解为10进制,也可以理解为8进制或者16进制,所以对8进制,我们需要以0开头,对16进制数,我们已0x开头。举例:
int a = 100 ; (10进制)
int a = 0000 0000 0000 0000 0110 0100 ; (2进制)
int a = 0144; (8进制 144 =4×8^0+4×8^1+1×8^2)
int a =0x64 ; (16进制)
四 负数
10进制数有正负之分,比如12表示正12,而-12表示负12;但8进制和16进制只能表达无符号的正整数,那么我们的计算机是怎么表示负数的呢?这就是原码、反码、补码的概念了。举例来说:
假设有一个int 类型的数,值为5,那么,计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二进制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
那么,-5在计算机中如何表示?在计算机中,负数以其正值的补码形式表达。什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是5的原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101 每一位取反
得11111111 11111111 11111111 11111010
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
- 进制及其相关
- IOS 16进制字符串实现Java parseInt()算法及其相关
- 子窗口及其相关
- SIFT算法及其相关
- SSL 及其相关知识
- C#:类及其相关
- ldconfig及其相关环境变量
- socket 及其相关函数
- 链表环及其相关问题
- DMZ及其设置相关
- DMZ及其设置相关
- DFS 及其相关证明
- 单链表及其相关操作
- 拼图游戏及其相关算法
- 沙盒及其相关
- xml学习及其相关
- 8、继承及其相关
- dijkstra及其相关练习题
- 【已解决】一个makefile中export出来的变量在另外一个makefile中无法访问
- 概率算法-均匀分布产生正态分布
- javascript中如何做对象的类型判断
- 什么是赚钱
- UVaOJ729---The Hamming Distance Problem
- 进制及其相关
- HttpURLConnection数据传输细节
- editplus 3 注册码
- python读取CSV文件
- Base64编码
- 关于JDK动态代理的理解
- 执行带jar 的class类里面的main 方法
- hdu 1024 DP 求n个数m个不交叉子段的最大和
- 问题 A: 整数连接