精华内容
下载资源
问答
  • ** ## 标题 二进制与十六进制的转化** #include #include <stdio.h> #include <string.h> #include <math.h> using namespace std; int main() { int n,i,j,t,w,r,a,m,s,b[999],k,...
                              ** ## 标题 二进制与十六进制的转化**
    

    #include
    #include <stdio.h>
    #include <string.h>
    #include <math.h>

    using namespace std;

    int main()
    {
    int n,i,j,t,w,r,a,m,s,b[999],k,y;
    char x[999];
    cin>>t;
    for(i=1;i<=t;i++)
    {
    cin>>x;r=0,s=0;k=0;
    n=strlen(x);
    a=n%4;
    for(j=n-1;j>=a;j–)
    {
    if(x[j]‘1’)
    {
    w=1;
    }
    else if(x[j]
    ‘0’)
    {
    w=0;
    }
    m=pow(2,r);
    r++;
    s=s+mw;
    if(r>3)
    {
    b[k]=s;
    k++;
    r=0;
    s=0;
    }
    }
    // cout<<k<<" “<<s<<” “<<n<<” “<<a<<” "<<b[0]<<endl;
    for(j=a-1;j>=0;j–)
    {
    if(x[j]‘1’)
    {
    w=1;
    }
    else if(x[j]
    ‘0’)
    {
    w=0;
    }
    m=pow(2,r);
    r++;
    s=s+m
    w;
    }
    if(s!=0)
    {
    b[k]=s;
    k++;
    }
    // cout<<k<<endl;
    for(j=k-1;j>=0;j–)
    {
    if(b[j]<10)
    {
    cout<<b[j];
    //cout<<“123”<<endl;
    }
    else if(b[j]>=10)
    {
    y=b[j]-10;
    printf("%c",‘a’+y);
    //cout<<y<<endl;
    }
    }
    cout<<endl;
    }
    return 0;
    }
    第一次写博客,写了刚编写出来的代码,刚开始代码不知道怎么写,想了好久,才明白!

    展开全文
  • 在说二进制前,先说一下我们常用十进制:十进制就是逢10进位,十进制是由0、1、2、3、4、5、6、7、8、9这10个基本数字组成。每次在9之后(也就是10)就进一位,我们可以把9先理解成09,10就是在099钱一位进一位...

    在说二进制前,先说一下我们常用的十进制:

    十进制就是逢10进位,十进制是由0、1、2、3、4、5、6、7、8、9这10个基本数字组成。每次在9之后(也就是10)就进一位,我们可以把9先理解成09,10就是在09的9的钱一位进一位,9回到0就变成了10,同理19的9的前一位1进一位变成2,9回到0,我们再看一下99,我们先把99写成099,099加1最末尾的9需要进位,末尾变回0,末尾的上一位(也就是十位)进一位,十位的9加1,需要向十位的上一位进一位(也就是百位),百位原本是0,进一位变成1,所以,99+1有连续两次进位是100了。在十进制中,10是基数。位值相同,上一位是下一位的10倍,如880,百位的8表示的数值是十位8的10倍。

    同理,二进制就是逢2进位,二进制只有0、1两个基本数字,0是00,1是01,2需要进位变成10,3是11,4又要进位,变成100,5是101,6是110,7是111,8又要进位,变成1000。在二进制中,2是基数,相邻两位相差2倍。如110,100是4,10是2,相差2倍。

    十六进制是逢16进位,十六进制是由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f这16个符号表示各位。由于各位数字不够16个,所以增加了a~f 这6个字母表示十六进制10~15的各位。所以,十六进制中a是10,b是11,c是12,d是13,e是14,f是15,10等于16,40=64,100=1*16^2(16的平方)。相邻两位相差16倍。十六进制的作用就是为了二进制书写方便,因为4位二进制(2^4=16)正好是一位16进制,如1111(二进制)=f(十六进制)=15(十进制);1010 1001 = a9 = 169;再举个长点的例子:1011 0101 1110 1111 0010 0011 1000 0111=b5ef2387,可以看出二进制那么长的一串十六进制只要8个字符和数字就可以表示。

    二进制怎么表示正数和负数:

    二进制规定最高位是1表示正数,最高位是0表示负数。比如:1111是一个负数,0111是一个正数,在计算机中一般最少是8位,比如1111 1111,规定 1111 1111=-1,因为1111 1111 + 1 =0,因为这里只有八位所有最高位丢掉就是1111 1111 + 1= 0000 0000;如果是32位同理规定1111 1111 1111 1111 1111 1111 1111 1111 + 1 = -1;其实计算机是通过补码的方式来进行计算负数的,就是将一个正数取反+1;比如:0111取反是1000,再+1=1000 +1 = 1001 = -7,同样负数取反+1可以变成正数 1001取反0110,0110 + 1 = 0111 = 7。

    二进制的<>、>>>移位

    << 是左移位操作,最低位补0,最高位超出部分丢弃,相当将数字乘2的幂次操作。<<1是向左移一位操作,如:0010 1110 <1 为 0101 1100,相当将数字乘2;0010 1110 < 2 后为 1011 1000,相当将数字乘4。

    >> 是带符号右移位操作,最低位超出部分丢弃,最高位正数补0,负数补1,相当将数字除2的幂次操作。 >> 1是向右移一位操作,0010 1110 >> 1 后为0001 0111,相当将数字除2;0010 1110 >> 2 后为0000 1011,相当将数字除4;这里要强调一下,二进制的移位操作中如果最低位是1,那么1将会被丢弃。所以5右移一位不是2.5,而是2。

    >>>无符号右移,就是表示正数的0和表示负数的1一起向右移动,所以移动过程中负数会变成负数,这个运用不多。

    移位符可以将几个小的数拼成一个大数。比如:我们常用的ip就是由4个byte组成192.168.2.11,1100 000. 1010 1000. 0000 0010. 0000 1011,192<<24+168<<16+2<<8+11即可得到字符串192168211。同样将一个大数字也可以拆分成几个小数字。如0xD4AF23,0xD4AF23&&FF = 0x23=0010 0101 = 35,0xD4AF23>>8&&FF=0xAF=1010 1111=175,0xD4AF23>>16&&FF=D4=1101 0100=211。

    附0~15二进制、十进制、十六进制对比表

    展开全文
  • 二进制与八进制,十进制,十六进制的转化 二进制, 八进制 tip:可以把二进制的每三位看成是八进制的一位; 例如:111101; 111是7,101是5,所以八进制为75; 相反地,八进制到二进制,可以把八进制的一位看成是二进制的...

    二进制与八进制,十进制,十六进制的转化

    二进制, 八进制

    tip:可以把二进制的每三位看成是八进制的一位;
    例如:111101;
    111是7,101是5,所以八进制为75;
    相反地,八进制到二进制,可以把八进制的一位看成是二进制的三位;

    二进制,十进制

    tip:将十进制的数,重复对2取余,余数倒序就是二进制数;
    例如:14;
    14÷2=70;
    7÷2=31;
    3÷2=11;
    1÷2=01;
    故倒序为1110,即所对应的二进制数;
    如果是十进制的小数的话: 如60.25
    则整数部分60,上述转化为111100;
    小数部分0.25,每次乘2,取整数部分的正序;
    0.25×2=0.5,整数部分:0
    0.5×2=1,整数部分:1
    则十进制0.25对应二进制的0.01
    故十进制的60.25=二进制的111100.01
    二进制转十进制的话,就是直接加起来就是;

    二进制,十六进制

    tip:跟二进制与八进制的转化同理,可以把二进制的每四位看成是十六进制的一位即可;

    展开全文
  • /** * 十六进制String转换成Byte[] * @param hexString the hex string * @return byte[] */ public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("...

    JAVA Code:

    
     
    1. public class HexUtils {

    2.  
    3. /** * 十六进制String转换成Byte[] * @param hexString the hex string * @return byte[] */

    4. public static byte[] hexStringToBytes(String hexString) {

    5. if (hexString == null || hexString.equals("")) {

    6. return null;

    7. }

    8. hexString = hexString.toUpperCase();

    9. int length = hexString.length() / 2;

    10. char[] hexChars = hexString.toCharArray();

    11. byte[] d = new byte[length];

    12. for (int i = 0; i < length; i++) {

    13. int pos = i * 2;

    14. d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));

    15. }

    16. return d;

    17. }

    18.  
    19. /** * Convert char to byte * @param c char * @return byte */

    20. private static byte charToByte(char c) {

    21. return (byte) "0123456789ABCDEF".indexOf(c);

    22. }

    23.  
    24. /* 这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。 * @param src byte[] data * @return hex string */

    25. public static String bytesToHexString(byte[] src){

    26. StringBuilder stringBuilder = new StringBuilder("");

    27. if (src == null || src.length <= 0) {

    28. return null;

    29. }

    30. for (int i = 0; i < src.length; i++) {

    31. int v = src[i] & 0xFF;

    32. String hv = Integer.toHexString(v);

    33. if (hv.length() < 2) {

    34. stringBuilder.append(0);

    35. }

    36. stringBuilder.append(hv);

    37. }

    38. return stringBuilder.toString();

    39. }

     

    这段代码在Java上使用或者kotlin引用都不会出现问题的,但现在Google宣布Kotlin成安卓官方语言,所以很多人都会将之前Java代码转成kotlin,如果是把Java代码直接通 studiog工具栏Code->Convert java File to Kotlin 生成kotlin代码,则会报以下的错误

    这两个地方的出错都是由于kotlin位运算符只适用于Int 和 Long,所以先将shl ,and 前面的值转成Int 类型再执行shl ,and 等运算。Kotlin中每个数字类型支持如下的转换:

    • toByte(): Byte
    • toShort(): Short
    • toInt(): Int
    • toLong(): Long
    • toFloat(): Float
    • toDouble(): Double
    • toChar(): Char

    Kotlin Code

    
     
    1. object HexUtils {

    2.  
    3. /**

    4. * 十六进制String转换成Byte[]

    5. * @param hexString the hex string

    6. * *

    7. * @return byte[]

    8. */

    9. fun hexStringToBytes(hexString: String?): ByteArray? {

    10. var hexString = hexString

    11. if (hexString == null || hexString == "") {

    12. return null

    13. }

    14. hexString = hexString.toUpperCase()

    15. val length = hexString.length / 2

    16. val hexChars = hexString.toCharArray()

    17. val d = ByteArray(length)

    18. for (i in 0..length - 1) {

    19. val pos = i * 2

    20. d[i] = (charToByte(hexChars[pos]).toInt() shl 4 or charToByte(hexChars[pos + 1]).toInt()).toByte()

    21. }

    22. return d

    23. }

    24.  
    25. /**

    26. * Convert char to byte

    27. * @param c char

    28. * *

    29. * @return byte

    30. */

    31. private fun charToByte(c: Char): Byte {

    32.  
    33. return "0123456789ABCDEF".indexOf(c).toByte()

    34. }

    35.  
    36. /* 这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。

    37. * @param src byte[] data

    38. * @return hex string

    39. */

    40. fun bytesToHexString(src: ByteArray?): String? {

    41. val stringBuilder = StringBuilder("")

    42. if (src == null || src.size <= 0) {

    43. return null

    44. }

    45. for (i in 0..src.size-1) {

    46. val v = src[i].toInt() and 0xFF

    47. val hv = Integer.toHexString(v)

    48. if (hv.length < 2) {

    49. stringBuilder.append(0)

    50. }

    51. stringBuilder.append(hv)

    52. }

    53. return stringBuilder.toString()

    54. }

    55. }

    因为是工具类,一般都应该是单例,在kotlin中 Object +类名 即表示该

    展开全文
  • 二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都是非常容易,就是“按权相加”。所谓“权”,也即“位权”。例如:8546=8 * 10 ^ 3 + 5 * 10 ^ 2 + 4 * 10 ^ 1 + 6 * 10^ 0=8000+...
  • 十进制->二进制、八进制、十六进制:除进制数取余倒序法 二进制、八进制、十六进制->十进制:按位乘进制数上幂法 1.十进制二进制 import java.util.LinkedList; public class DecimalAndBinary { /** * @...
  • 为区别于其它进制数,二进制书写通常在数右下方注上基数2,或加后面加B表示。 例如:二进制数10110011可以写成(10110011)2,或写成10110011B,对于十进制数可以不加注.计算机中数据均采用二进制数表示,这...
  • base_2=bin(num)#转化二进制 base_8=oct(num)#转化为八进制 base_16=hex(num)#转化十六进制 return base_2,base_8,base_16 #二进制的简单实现,进制的前缀自行添加 def tunport(num): result=[] while ...
  • 正数转换为二进制与源码相同. 最高位是符号位,0代表正数 比如正整数10 10/2=5......0 5/2=2.......1 2/2=1.......0 1/2=0.......1 从下往上读为1010,加上符号位为 0 1010 (B) 因为二进制的基数为2,我们十进制化二...
  • 1、二进制(binary)在数学和数字电路中指以2为基数记数系统,以2为基数代表系统是二进位制,通常用0和1表示。 2、八进制,Octal,缩写OCT或O,一种以8为基数计数法,采用0,1,2,3,4,5,6,7八个数字,逢...
  • Java开发过程中,我们常会需要将二进制数组转换为字符串。Spring工具类DegistUtils...取高四位:字节11110000做运算后右移四位,字节11110000转化十六进制为0xF0,十进制值为255-15=240 (11101001 &...
  • 直接上代码: public class Jinzhizhuanhuan { public static void main(String[] args) {  int a=10;  String s=Integer.toHexString... // 十进制转化十六进制  String s1=Integer.toBinaryString
  • 二进制二进制数据是用0和1两个数码...1、二进制转化十六进制: eg: 11 0011 1011,先从右到左,四个位一组,不够在前面补零够四位即可:0011 0011 1011,然后从左往右:0+0+2+1 0+0+2+1 8+0+2+1 ,十六进制数位:
  • 比如十进制与二进制,八进制,十六进制之间相互转化。为了方便起见,特意将java中不同进制间相互转化的代码整理以备后续使用。package leilei.bit.edu.sort;public class NumRadixConvert { public static void ...
  • 1 声明二进制、八进制、十六进制的变量 /** 二进制变量的声明以0b为前缀; 八进制变量的声明以0为前缀; 十六进制变量的声明以0x为前缀。 */ int a = 0b11; //声明二进制变量 int b = 011; //声明八进制变量 int c =...
  • 在计算机中我们常用进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制是逢10进一位。 2进制、8进制、16进制转换十进制,只需要使用“按权展开...
  • 对于一个十进制的数,转化二进制,对整数部分进行除二处理,如十进制数10: 10/2=5 余0 5/2=2 余1 2/2=1 余0 1/2=0 余1 对于整数要倒着取余数,所以十的二进制就是1010B(B表示二进制)。 对于小数,如0.25: 0.25×...
  • 十进制转换为二进制十六进制 一.十进制数转化二进制 整数除以2,商继续除以2,得到0为止。 以23为例: 23/2 11余1 11/2 5 余 1 5 /2 2余 1 2 /2 1余 0 1 /2 0余 1 对于其余数从上到下为二进制的低位到高位;...
  • 进制与二进制互转首先理解十进制如何转二进制:将十进制数据除以2直到商为0,然后将余数从下往上排序连接,即可得到该数字的二进制数。如:整数1313/2=6余16/2=3余03/2=1余11/2=0余1取13余数,倒序连接。所以13...
  • 十进制转二进制方法相同,十六进制数用0~9和A,B,C,D,E,F进行表示,用短除法进行计算,例如将120转化十六进制数 120÷16=7 余8 7÷16=0 余7 故十六进制数为78 二、十六进制转十进制 与二进制十六进制数方法相同...
  • 1.java中常见进制类型二进制(Ob开头),八进制(O开头),十进制,十六进制(Ox开头) 2.十进制转换其他类型进制 10进制转化其他进制 对应方法,参数:n(原10进制数据),r(进制), 返回值 10进制转2进制 Integer...
  • 进制与二进制互转首先理解十进制如何转二进制:将十进制数据除以2直到商为0,然后将余数从下往上排序连接,即可得到该数字的二进制数。如:整数1313/2=6余16/2=3余03/2=1余11/2=0余1取13余数,倒序连接。所以13...
  • 众所周知,计算机中使用二进制运算规则,能够读懂二进制语言,但究竟什么是进制?进制之间是如何相互转化的?今天我们就来详细了解下。
  • 二进制与十进制之间的转化 十进制转二进制 方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。 (具体用法如下图) 二进制...
  • 计算机只能识别二进制,这是众所周知的。但除了二进制,还有别的进制,它们之间是怎样转换的呢...0.二八转换:二进制中的一位对应八进制的三位,即八进制中的每一位我们用二进制数来表示,不够三位,用0补全三位 ...
  • 二进制是计算技术中广泛采用一种数制。二进制数据是用0和1两个数码来表示数。它基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前计算机系统使用...
  • 二转十:150(十)/2余数01101001,二进制表示为10010110 十转二:127+026+025+124+122+121+020=150 八转二:226(八)由2/2得010,6/2得110,故10010110(二) 二与十六:100101100(二)由123+122+121+1*20=C,...
  • 上图中箭头方向即为二进制数中从低位到高位(从右往左)顺序, 二进制数为:0000 0000 0000 0000 0000 0000 0000 1111 2.十进制数转化为八进制数 十进制数:15 转为二进数相同 (十进制)15=(八进制)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382
精华内容 152
关键字:

二进制与十六进制的转化